package com.ss.utlis;

import lombok.extern.slf4j.Slf4j;

import javax.validation.constraints.NotNull;
import java.util.List;
import java.util.function.Function;

/**
 *  List集合的工具类
 * @Author: 夏十七
 * @Date: 2019/7/24 23:45
 * @Version 1.0
 */
@Slf4j
public class ListUtil {


    /**
     * 一个list是否包含满足 function 函数条件的对象。
     * @param list 集合
     * @param function 表达式
     * @param <T> 泛型
     * @return
     */
    public static<T> boolean contains(@NotNull List<T> list, Function<T,Boolean> function){
        for (T t : list) {
            if (function.apply(t)){
                return true;
            }
        }
        return false;
    }

    /**
     * 取出List中满足条件的第一个对象
     * @param list 集合
     * @param function 表达式
     * @param <T> 泛型
     * @return
     */
    public static<T> T getFirstEntity(List<T> list, Function<T,Boolean> function){
        for (T t : list) {
            if (t!=null && function.apply(t)){
                return t;
            }
        }
        return null;
    }


}
